home *** CD-ROM | disk | FTP | other *** search
/ Stone Design / Stone Design.iso / Stone_Friends / Wave / WavesWorld / Examples / support / wheel.wwModel / model.eve < prev    next >
Encoding:
Text File  |  1995-03-22  |  2.5 KB  |  76 lines

  1. set tire(thickness) {0.100000};
  2. set tire(radius) {2.0};
  3. set tire(color) {.3 .1 .1};
  4.  
  5. EveCmd {set rim(minorRadius) [expr {1.2 * $tire(thickness)}]}
  6. EveCmd {set rim(majorRadius) [expr {$tire(radius) *.995}]}
  7. set rim(color) {0.924665 0.901624 1.000000};
  8.  
  9. set rubber RCRubber
  10. set metal RCMetal
  11.  
  12. set spoke(xTranslate) 0
  13. set spoke(yTranslate) 0
  14. set spoke(zTranslate) .15
  15. set spoke(xTranslateIncr) 0
  16. set spoke(yTranslateIncr) 0
  17. set spoke(zTranslateIncr) 0
  18.  
  19. set spoke(xRotate) -90
  20. set spoke(zRotate) 0
  21. set spoke(zRotateIncr) 20
  22. set spoke(lOffset) -4.25
  23. set spoke(rOffset) 4.25
  24. set spoke(yRotate) 0
  25. set spoke(yRotateIncr) 10
  26. set spoke(pairCount) 6
  27. #spokes should be about 10% of the thickness of the tire (say)
  28. EveCmd {set spoke(radius) [expr {$tire(thickness) * .1}]}
  29.  
  30. loadControlPanel controls.nib
  31.  
  32. startShape wheel
  33.     startShape innerRim
  34.         Surface $metal
  35.         EveCmd {Color $rim(color)}
  36.         TransformBegin
  37.            EveCmd {Scale $tire(thickness) $tire(thickness) $tire(thickness)}
  38.           EveCmd {Torus $tire(radius) [expr {$tire(radius) * .75}] 90 270 360} 
  39.         TransformEnd 
  40.         for {set i 0} {$i < $spoke(pairCount)} {incr i} \
  41.                 {  startShape spokeL${i};
  42.             EveCmd {Color $rim(color)};
  43.             Surface $metal;
  44.             Translate $spoke(xTranslate) $spoke(yTranslate) $spoke(zTranslate);
  45.             Rotate $spoke(yRotate) 0 1 0;
  46.             Rotate [expr {$spoke(xRotate) + $spoke(lOffset)}] 1 0 0;
  47.             EveCmd {Cylinder $spoke(radius) 0 $tire(radius) 360};
  48.                     set spoke(yRotate) [expr {$spoke(yRotate) + $spoke(yRotateIncr)}]
  49.              endShape;
  50.                    startShape spokeR${i};
  51.             EveCmd {Color $rim(color)};
  52.             Surface $metal;
  53.             Translate $spoke(xTranslate) $spoke(yTranslate) [expr {-1 * $spoke(zTranslate)}];
  54.             Rotate [expr {$spoke(xRotate) + $spoke(rOffset)}] 1 0 0;
  55.             Rotate [expr {$spoke(yRotate) + $spoke(yRotateIncr)}] 0 1 0;
  56.             #Rotate $spoke(yRotate) 0 1 0;
  57.             EveCmd {Cylinder $spoke(radius) 0 $tire(radius) 360};
  58.                     set spoke(yRotate) [expr {$spoke(yRotate) + $spoke(yRotateIncr)}]
  59.              endShape;
  60.                    # we want the spoke(xTranslate) to vary over 2PI for 360/$spoke(pairCount)
  61.                    set interval [expr {[format %f $i]/$spoke(pairCount)}]
  62.                    set spoke(xTranslate) [expr {.2 * sin(2. * $PI * $interval)}]
  63.                 }
  64.         startShape tire
  65.             Surface $rubber
  66.             EveCmd {Color $tire(color)}
  67.             EveCmd {Torus $tire(radius) $tire(thickness) 0 360 360}
  68.         endShape
  69.         startShape rim
  70.             Surface $metal
  71.             EveCmd {Color $rim(color)}
  72.             EveCmd {Torus $rim(majorRadius)  $rim(minorRadius) 90 270  360}
  73.         endShape
  74.     endShape
  75. endShape
  76.